package algo3.modelo;

public enum Direccion {
    ARRIBA(0, 1),
    ABAJO(0, -1),
    DERECHA(1, 0),
    IZQUIERDA(-1, 0),
    DIAG_DERECHA_ARRIBA(1, 1),
    DIAG_DERECHA_ABAJO(1, -1),
    DIAG_IZQUIERDA_ARRIBA(-1, 1),
    DIAG_IZQUIERDA_ABAJO(-1, -1);

    private int fila;
    private int columna;
    
	private Direccion(int columna, int fila){
        this.fila = fila;
        this.columna = columna;
      }
	
	public int getFila(){
		return fila;
	}

	public int getColumna(){
		return columna;
	}
	
	public Direccion inversa(){
		Direccion inv = null;
		switch(this){
			case ARRIBA:
				inv = ABAJO; break;   
	        case ABAJO:
	        	inv = ARRIBA; break;
	        case DERECHA:
	        	inv = IZQUIERDA; break;
	        case IZQUIERDA:
	        	inv = DERECHA; break;   	
	        case DIAG_DERECHA_ARRIBA:
	        	inv = DIAG_IZQUIERDA_ABAJO; break;
	        case DIAG_DERECHA_ABAJO:
	        	inv = DIAG_IZQUIERDA_ARRIBA; break;
	        case DIAG_IZQUIERDA_ARRIBA:
	        	inv = DIAG_DERECHA_ABAJO; break;
	        case DIAG_IZQUIERDA_ABAJO:
	        	inv = DIAG_DERECHA_ARRIBA; break;
	        default:
	        	throw new RuntimeException("Direccion invalido" + this);
		}
		return inv;
	}
}
